package tests;


import static org.junit.Assert.*;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

import business.Aluno;
import business.CalendarDate;
import business.Pessoa;
import business.Professor;

public class PessoaTest {

	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
	}

	@AfterClass
	public static void tearDownAfterClass() throws Exception {
	}

	@Before
	public void setUp() throws Exception {
	}

	@After
	public void tearDown() throws Exception {
	}
	
	@Test
	public void validConstruct(){
		Pessoa p = new Aluno("John Doe", new CalendarDate(11,12,2000), "john@doe.com", 1);
	}
	
	@Test (expected=AssertionError.class)
	public void invalidConstruct(){
		Pessoa p = new Aluno(null,null,null,1);
	}
	
	@Test (expected=AssertionError.class)
	public void invalidConstruct2(){
		Pessoa p = new Aluno("John Doe", new CalendarDate(), "john@doe,com", 1);
	}
	
	@Test
	public void validSetNome(){
		Pessoa p = new Professor();
		p.setNome("John Doe");
	}
	
	@Test (expected=AssertionError.class)
	public void invalidSetNome(){
		Pessoa p = new Professor();
		p.setNome(null);
	}
	
	@Test
	public void validSetDate(){
		Pessoa p = new Professor();
		p.setDataNascimento(new CalendarDate());
	}
	
	@Test (expected=AssertionError.class)
	public void invalidSetDate(){
		Pessoa p = new Professor();
		p.setDataNascimento(null);
	}
	
	@Test
	public void validSetEmail(){
		Pessoa p = new Professor();
		p.setEmail("john@doe.com");
	}
	
	@Test (expected=AssertionError.class)
	public void invalidSetEmail(){
		Pessoa p = new Professor();
		p.setEmail(null);
	}
	
	@Test
	public void toStringTester(){
		Pessoa p = new Aluno();
		p.toString();
	}
	
	@Test
	public void getterTester(){
		Pessoa p = new Aluno();
		p.getClass();
		p.getDataNascimento();
		p.getEmail();
		p.getNome();
	}
	
	@Test (expected=AssertionError.class)
	public void idadeTester(){
		Pessoa p = new Aluno();
		p.idade();
	}
	
	@Test
	public void pessoaTester(){
		Pessoa p = new Aluno();
		assertTrue(p instanceof Pessoa);
	}

}
